Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications may be configured to store and access large portions of data stored in databases. Such database-related software applications typically store and access the data according to rules or sets of rules. For example, a database application may be configured to receive orders for widgets produced by a company. The database may store many different types of information such as customer identification, order number, order type, number and type of widgets ordered, past orders, delivery dates and many other types of information as needed. These various portions of information are related to each other, and in some cases, one portion of information may depend on another, such that if portion “B” changes, portion “A” should also change as a result of the change to portion “B”. When multiple pieces of information are dependant on one another, forward chaining is used to update the portions of information that are dependant on the portion that changed.
Typical software database applications are configured to perform forward chaining using a static analysis of conditions which cause the data portions to change.